/*
Go 语言的基础组成有以下几个部分：

包声明
引入包
函数
变量
语句 & 表达式
注释

第一行代码 package main 定义了包名。你必须在源文件中非注释的第一行指明这个文件属于哪个包，如：package main。package main表示一个可独立执行的程序，每个 Go 应用程序都包含一个名为 main 的包。*/
package main

/*下一行 import "fmt" 告诉 Go 编译器这个程序需要使用 fmt 包（的函数，或其他元素），fmt 包实现了格式化 IO（输入/输出）的函数。*/
import "fmt"

//单行注释，初始化先执行
func init() {
	fmt.Println("这是go的初始化方法")
}

/* 下一行 func main() 是程序开始执行的函数。main 函数是每一个可执行程序所必须包含的，一般来说都是在启动后第一个执行的函数（如果有 init() 函数则会先执行该函数）。 */
func main() {
	fmt.Println("Hello,World!主函数")
	test()
}

/*
这里会报错如下
需要注意的是 { 不能单独放在一行，所以以下代码在运行时会产生错误：
# command-line-arguments
.\hello.go:17:6: missing function body
.\hello.go:18:1: syntax error: unexpected semicolon or newline before {

func test()
{ // 错误，{ 不能在单独的行上
	fmt.Println("这是test方法")
}
修正不行
*/
//修正
func test() {
	fmt.Println("这是test方法")
}

/*
1.大写字母开头，则对包外是可见  类似public
2.小写字母开头，则对包外是不可见 类似protected
当标识符（包括常量、变量、类型、函数名、结构字段等等）以一个大写字母开头，如：Group1，那么使用这种形式的标识符的对象就可以被外部包的代码所使用（客户端程序需要先导入这个包），这被称为导出（像面向对象语言中的 public）；标识符如果以小写字母开头，则对包外是不可见的，但是他们在整个包的内部是可见并且可用的（像面向对象语言中的 protected ）。
*/
